/* STM32 Blue Pill project using the STM32 Arduino Core (stm32duino) */
#include "leaf.h"
#include "leaf-oscillators.h"
#include "leaf-analysis.h"
#define SAMPLING_RATE 2560 /* Keep sampling rate low to save RAM */
#define MEM_SIZE 16384
#define LED PB9 /* LED show when detector is ready */
char mempool[MEM_SIZE];
LEAF leaf;
tCycle cycle;
tPitchDetector pitchDetector;
float generateRandomFloat(){
return ((float)rand()/(float)(RAND_MAX));
}
void setup() {
Serial.begin(9600); //115200);
Serial.println("Hello STM32!");
LEAF_init(&leaf, SAMPLING_RATE, mempool, MEM_SIZE, &generateRandomFloat);
tCycle_init(&cycle, &leaf);
tCycle_setFreq(&cycle, 330.0);
tPitchDetector_init(&pitchDetector, 82.0, 1320.0, &leaf);
Serial.println("Welcome to LEAF :-)");
pinMode(LED, OUTPUT);
}
void loop() {
delay(.09);
float sampleOut = tCycle_tick(&cycle);
int detectorReady = tPitchDetector_tick(&pitchDetector, sampleOut);
Serial.print((int) (sampleOut * 512));
Serial.print("\t");
Serial.print(detectorReady);
Serial.print("\t");
Serial.print(tPitchDetector_getPeriodicity(&pitchDetector), 1);
Serial.print("\t");
float detectedFreq = tPitchDetector_predictFrequency(&pitchDetector);
Serial.print(min(max(82, (int) detectedFreq), 1320), 1);
Serial.print("\t");
Serial.println(max(0, (int) LEAF_frequencyToMidi(detectedFreq)));
digitalWrite(LED, detectorReady);
}
Loading
stm32-bluepill
stm32-bluepill